<?php
namespace app\admin\controller;
//require_once APP_PATH . '/../extend/qiniusdk/autoload.php';
vendor('qiniu.autoload');
use Qiniu\Auth as Auth;
use Qiniu\Storage\UploadManager;
use Qiniu\Processing\PersistentFop;
use think\Controller;
use think\Db;

class Qiniu extends Controller
{
    /**
     * 图片上传
     * @return String 图片的完整URL
     */
    public function upload()
    {

        // 获取七牛配置信息
        $qn_config      = Db("option")->where('option_name','qiniu')->value('option_value');
        $qn_config      = json_decode($qn_config, true);
        // 获取表单上传文件 例如上传了001.jpg
        $file = request()->file('file');
        // 本地路径
        $filePath = $file->getRealPath();

        // 文件后缀
        $ext = pathinfo($file->getInfo('name'), PATHINFO_EXTENSION);
        // 七牛存储文件名
        $file_name = 'images/'.date("Ymd").rand(1000,9999).'.'.$ext;

        // 移动到框架应用根目录/uploads/ 目录下
//        $targetDir = ROOT_PATH . 'public' . DS."uploads" . DS;
//
//        if (!file_exists($targetDir)) {
//            mkdir($targetDir, 0777, true);
//        }
//
//        $info = $file->move($targetDir);
//
//        if ($info) {
//            // 成功上传后 获取上传信息
//            // 输出 jpg
//            // echo $info->getExtension();
//            // // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
//            // echo $info->getSaveName();
//            $key = $info->getSaveName();
//            // 输出 42a79759f284b767dfcb2a0197904287.jpg
//            $file_name = $info->getFilename();
//            $save_name = date('Ymd') . '/' . $file_name;
//        } else {
//            // 上传失败获取错误信息
//            echo $file->getError();
//        }
        $auth = new Auth($qn_config['ak'], $qn_config['sk']);

        $uptoken = $auth->uploadToken($qn_config['bk'], null, 3600, null);
        $uploadMgr = new UploadManager();
        list($ret, $err) = $uploadMgr->putFile($uptoken, $file_name, $filePath);
        if ($err !== null) {
//            $this->error('error', '', $err);
            return json(['code'=>0]);
        } else {
            // var_dump($ret);
//            $this->success('ok', '', ['url' => $qn_config['domain'] . '/' . $ret['key'], 'pic' => $ret['key']]);
            return json(['code'=>1,'url'=>$qn_config['domain']  . $ret['key'], 'pic' => $ret['key']]);
        }


    }


    /**
     *
     * {
     * // errno 即错误代码，0 表示没有错误。
     * //       如果有错误，errno != 0，可通过下文中的监听函数 fail 拿到该错误码进行自定义处理
     * "errno": 0,
     *
     * // data 是一个数组，返回若干图片的线上地址
     * "data": [
     * "图片1地址",
     * "图片2地址",
     * "……"
     * ]
     * }
     *
     *
     * 图片上传
     * @return String 图片的完整URL
     */
    public function wang_uptoken()
    {

        $qn_config = Db::name('option')->where('option_name', 'qiniu')->value('option_value');
        $qn_config = json_decode($qn_config, true);

        $auth = new Auth($qn_config['ak'], $qn_config['sk']);

        // 上传文件到七牛后， 七牛将文件名和文件大小回调给业务服务器.
        // 可参考文档: http://developer.qiniu.com/docs/v6/api/reference/security/put-policy.html
        //         $policy = array(
        //             'callbackUrl' => 'http://your.domain.com/upload_verify_callback.php',
        //             'callbackBody' => 'filename=$(fname)&filesize=$(fsize)'
        //         );
        $uptoken = $auth->uploadToken($qn_config['bk'], null, 3600, null);

        return json(['uptoken' => $uptoken]);


    }

    public function get_config()
    {
        $qn_config = Db::name('option')->where('option_name', 'qiniu')->value('option_value');
        $qn_config = json_decode($qn_config, true);
        return json(['domain' => $qn_config['domain']]);
    }


}
